Self-Learned Algorithms - 09
This is my learning note about algorithms.
Reference
- 《小浩算法》) - 二分法系列
875.爱吃香蕉的珂珂
https://leetcode-cn.com/problems/koko-eating-bananas/
题解
- 看完题目最大的感想:珂珂真能吃,警卫真能摸……
解法
- 二分法:找到一个最小的K,此时小于K的都不满足条件,而大于K的都是满足条件的
1 | def possible(K): |
1 | i = math.ceil(sum(piles) / H) |
69.x的平方根
https://leetcode-cn.com/problems/sqrtx/
题解
- 暴力解法不可取
解法
- 二分法:右边界用x本身是可以的,另外除了0、1、2、3、4之外,其他数字的平方根都不会大于等于它的二分之一,也可以重新考虑一下边界问题
1 | l, r, ans = 0, x, -1 |
1 | if x == 0: |
278.第一个错误的版本
https://leetcode-cn.com/problems/first-bad-version/
解法
- 二分法:返回的条件为当前版本为True且(当前索引为0 或 左边的版本为False)。
m *
的作用是避免m - 1
为负数,如果 m 为 0,则代表左边没有版本,只需判断当前版本是否为 True
1 | l, h = 1, n |